﻿using SD.Infrastructure.RepositoryBase;
using SD.OpcProxy.Domain.Entities;
using SD.OpcProxy.ValueObjects.Enums;
using System;
using System.Collections.Generic;

namespace SD.OpcProxy.Domain.IRepositories
{
    /// <summary>
    /// 变量仓储接口
    /// </summary>
    public interface IVariableRepository : IAggRootRepository<Variable>
    {
        #region # 分页获取变量列表 —— ICollection<Variable> FindByPage(string keywords, VariableType? variableType...
        /// <summary>
        /// 分页获取变量列表
        /// </summary>
        /// <param name="keywords">关键字</param>
        /// <param name="variableType">变量类型</param>
        /// <param name="isReadonly">是否只读</param>
        /// <param name="dataTypes">数据类型集</param>
        /// <param name="opcServerId">OPC服务器Id</param>
        /// <param name="keepRecord">是否记录历史</param>
        /// <param name="pageIndex">页码</param>
        /// <param name="pageSize">页容量</param>
        /// <param name="rowCount">总记录条数</param>
        /// <param name="pageCount">总页数</param>
        /// <returns>变量列表</returns>
        ICollection<Variable> FindByPage(string keywords, VariableType? variableType, bool? isReadonly, IList<string> dataTypes, Guid? opcServerId, bool? keepRecord, int pageIndex, int pageSize, out int rowCount, out int pageCount);
        #endregion
    }
}
